{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "47f3874e7a51d5f2",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:19.835395Z",
     "start_time": "2024-04-19T03:25:18.418318Z"
    }
   },
   "outputs": [],
   "source": [
    "'''导入数据分析相关库'''\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "'''导入xgboost和网格搜索相关库'''\n",
    "import xgboost as xgb\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "'''导入时间库'''\n",
    "import time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:19.873361Z",
     "start_time": "2024-04-19T03:25:19.837510Z"
    }
   },
   "outputs": [],
   "source": [
    "'''导入当前文件下的train.csv和test.csv文件'''\n",
    "df = pd.read_csv('Share_Bike_Data\\\\train.csv')\n",
    "df_test = pd.read_csv('Share_Bike_Data\\\\test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "f956098aba4e57a2",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:19.926170Z",
     "start_time": "2024-04-19T03:25:19.878017Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 10000 entries, 0 to 9999\n",
      "Data columns (total 9 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   id          10000 non-null  int64  \n",
      " 1   city        10000 non-null  int64  \n",
      " 2   hour        10000 non-null  int64  \n",
      " 3   is_workday  10000 non-null  int64  \n",
      " 4   weather     10000 non-null  int64  \n",
      " 5   temp_1      10000 non-null  float64\n",
      " 6   temp_2      10000 non-null  float64\n",
      " 7   wind        10000 non-null  int64  \n",
      " 8   y           10000 non-null  int64  \n",
      "dtypes: float64(2), int64(7)\n",
      "memory usage: 703.3 KB\n"
     ]
    }
   ],
   "source": [
    "'''查看训练集的相关信息'''\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d16fe0614b2819f9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:19.987152Z",
     "start_time": "2024-04-19T03:25:19.928586Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "                id          city          hour    is_workday      weather  \\\ncount  10000.00000  10000.000000  10000.000000  10000.000000  10000.00000   \nmean    5000.50000      0.499800     11.527500      0.684000      1.42750   \nstd     2886.89568      0.500025      6.909777      0.464936      0.63764   \nmin        1.00000      0.000000      0.000000      0.000000      1.00000   \n25%     2500.75000      0.000000      6.000000      0.000000      1.00000   \n50%     5000.50000      0.000000     12.000000      1.000000      1.00000   \n75%     7500.25000      1.000000     18.000000      1.000000      2.00000   \nmax    10000.00000      1.000000     23.000000      1.000000      4.00000   \n\n             temp_1        temp_2          wind             y  \ncount  10000.000000  10000.000000  10000.000000  10000.000000  \nmean      15.268190     15.321230      1.248600     50.537400  \nstd        9.029152     11.308986      1.095773     47.769645  \nmin       -7.600000    -15.600000      0.000000      0.000000  \n25%        7.800000      5.800000      0.000000     10.000000  \n50%       15.600000     16.000000      1.000000     39.000000  \n75%       22.600000     24.800000      2.000000     75.000000  \nmax       38.600000     46.800000      7.000000    249.000000  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>city</th>\n      <th>hour</th>\n      <th>is_workday</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>temp_2</th>\n      <th>wind</th>\n      <th>y</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>count</th>\n      <td>10000.00000</td>\n      <td>10000.000000</td>\n      <td>10000.000000</td>\n      <td>10000.000000</td>\n      <td>10000.00000</td>\n      <td>10000.000000</td>\n      <td>10000.000000</td>\n      <td>10000.000000</td>\n      <td>10000.000000</td>\n    </tr>\n    <tr>\n      <th>mean</th>\n      <td>5000.50000</td>\n      <td>0.499800</td>\n      <td>11.527500</td>\n      <td>0.684000</td>\n      <td>1.42750</td>\n      <td>15.268190</td>\n      <td>15.321230</td>\n      <td>1.248600</td>\n      <td>50.537400</td>\n    </tr>\n    <tr>\n      <th>std</th>\n      <td>2886.89568</td>\n      <td>0.500025</td>\n      <td>6.909777</td>\n      <td>0.464936</td>\n      <td>0.63764</td>\n      <td>9.029152</td>\n      <td>11.308986</td>\n      <td>1.095773</td>\n      <td>47.769645</td>\n    </tr>\n    <tr>\n      <th>min</th>\n      <td>1.00000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>1.00000</td>\n      <td>-7.600000</td>\n      <td>-15.600000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>25%</th>\n      <td>2500.75000</td>\n      <td>0.000000</td>\n      <td>6.000000</td>\n      <td>0.000000</td>\n      <td>1.00000</td>\n      <td>7.800000</td>\n      <td>5.800000</td>\n      <td>0.000000</td>\n      <td>10.000000</td>\n    </tr>\n    <tr>\n      <th>50%</th>\n      <td>5000.50000</td>\n      <td>0.000000</td>\n      <td>12.000000</td>\n      <td>1.000000</td>\n      <td>1.00000</td>\n      <td>15.600000</td>\n      <td>16.000000</td>\n      <td>1.000000</td>\n      <td>39.000000</td>\n    </tr>\n    <tr>\n      <th>75%</th>\n      <td>7500.25000</td>\n      <td>1.000000</td>\n      <td>18.000000</td>\n      <td>1.000000</td>\n      <td>2.00000</td>\n      <td>22.600000</td>\n      <td>24.800000</td>\n      <td>2.000000</td>\n      <td>75.000000</td>\n    </tr>\n    <tr>\n      <th>max</th>\n      <td>10000.00000</td>\n      <td>1.000000</td>\n      <td>23.000000</td>\n      <td>1.000000</td>\n      <td>4.00000</td>\n      <td>38.600000</td>\n      <td>46.800000</td>\n      <td>7.000000</td>\n      <td>249.000000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''查看训练集的基本统计量'''\n",
    "df.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "source": [],
   "metadata": {
    "collapsed": false
   },
   "id": "b77f9eddd40c9ef"
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "746f15ee743fac8e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.011021Z",
     "start_time": "2024-04-19T03:25:19.990125Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   id  city  hour  is_workday  weather  temp_1  temp_2  wind   y\n0   1     0    22           1        2     3.0     0.7     0  15\n1   2     0    10           1        1    21.0    24.9     3  48\n2   3     0     0           1        1    25.3    27.4     0  21\n3   4     0     7           0        1    15.7    16.2     0  11\n4   5     1    10           1        1    21.1    25.0     2  39",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>city</th>\n      <th>hour</th>\n      <th>is_workday</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>temp_2</th>\n      <th>wind</th>\n      <th>y</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1</td>\n      <td>0</td>\n      <td>22</td>\n      <td>1</td>\n      <td>2</td>\n      <td>3.0</td>\n      <td>0.7</td>\n      <td>0</td>\n      <td>15</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>2</td>\n      <td>0</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.0</td>\n      <td>24.9</td>\n      <td>3</td>\n      <td>48</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>3</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>25.3</td>\n      <td>27.4</td>\n      <td>0</td>\n      <td>21</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>4</td>\n      <td>0</td>\n      <td>7</td>\n      <td>0</td>\n      <td>1</td>\n      <td>15.7</td>\n      <td>16.2</td>\n      <td>0</td>\n      <td>11</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>5</td>\n      <td>1</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.1</td>\n      <td>25.0</td>\n      <td>2</td>\n      <td>39</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''打印出训练集的前5行'''\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "8a22e728e663590f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.026855Z",
     "start_time": "2024-04-19T03:25:20.014023Z"
    }
   },
   "outputs": [],
   "source": [
    "'''删除训练集和测试集的“id”列'''\n",
    "df = df.drop('id', axis=1)\n",
    "df_test = df_test.drop('id', axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "2bbfb256447825e5",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.050818Z",
     "start_time": "2024-04-19T03:25:20.031604Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   city  hour  is_workday  weather  temp_1  temp_2  wind   y\n0     0    22           1        2     3.0     0.7     0  15\n1     0    10           1        1    21.0    24.9     3  48\n2     0     0           1        1    25.3    27.4     0  21\n3     0     7           0        1    15.7    16.2     0  11\n4     1    10           1        1    21.1    25.0     2  39",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>city</th>\n      <th>hour</th>\n      <th>is_workday</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>temp_2</th>\n      <th>wind</th>\n      <th>y</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>22</td>\n      <td>1</td>\n      <td>2</td>\n      <td>3.0</td>\n      <td>0.7</td>\n      <td>0</td>\n      <td>15</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.0</td>\n      <td>24.9</td>\n      <td>3</td>\n      <td>48</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>25.3</td>\n      <td>27.4</td>\n      <td>0</td>\n      <td>21</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0</td>\n      <td>7</td>\n      <td>0</td>\n      <td>1</td>\n      <td>15.7</td>\n      <td>16.2</td>\n      <td>0</td>\n      <td>11</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.1</td>\n      <td>25.0</td>\n      <td>2</td>\n      <td>39</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''展示训练集数据'''\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "3c05fc8fd105896c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.077423Z",
     "start_time": "2024-04-19T03:25:20.056887Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   city  hour  is_workday  weather  temp_1  temp_2  wind\n0     0     1           1        1    20.7    20.6     0\n1     1    18           0        1    32.4    36.0     1\n2     1    16           1        1    27.6    26.9     4\n3     1    11           0        1     9.3     9.4     0\n4     0    10           1        2    24.8    26.9     2",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>city</th>\n      <th>hour</th>\n      <th>is_workday</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>temp_2</th>\n      <th>wind</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>20.7</td>\n      <td>20.6</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1</td>\n      <td>18</td>\n      <td>0</td>\n      <td>1</td>\n      <td>32.4</td>\n      <td>36.0</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>1</td>\n      <td>16</td>\n      <td>1</td>\n      <td>1</td>\n      <td>27.6</td>\n      <td>26.9</td>\n      <td>4</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>1</td>\n      <td>11</td>\n      <td>0</td>\n      <td>1</td>\n      <td>9.3</td>\n      <td>9.4</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>0</td>\n      <td>10</td>\n      <td>1</td>\n      <td>2</td>\n      <td>24.8</td>\n      <td>26.9</td>\n      <td>2</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''展示测试集数据'''\n",
    "df_test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "720b4506058c7342",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.108928Z",
     "start_time": "2024-04-19T03:25:20.081214Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "14"
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''查看训练集是否存在重复值'''\n",
    "df.duplicated().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "6d45099337766a93",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.130294Z",
     "start_time": "2024-04-19T03:25:20.112495Z"
    }
   },
   "outputs": [],
   "source": [
    "'''删除训练集中的重复值'''\n",
    "df = df.drop_duplicates()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "da3ac93b34274103",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.152614Z",
     "start_time": "2024-04-19T03:25:20.134001Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 9986 entries, 0 to 9999\n",
      "Data columns (total 8 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   city        9986 non-null   int64  \n",
      " 1   hour        9986 non-null   int64  \n",
      " 2   is_workday  9986 non-null   int64  \n",
      " 3   weather     9986 non-null   int64  \n",
      " 4   temp_1      9986 non-null   float64\n",
      " 5   temp_2      9986 non-null   float64\n",
      " 6   wind        9986 non-null   int64  \n",
      " 7   y           9986 non-null   int64  \n",
      "dtypes: float64(2), int64(6)\n",
      "memory usage: 702.1 KB\n"
     ]
    }
   ],
   "source": [
    "'''打印训练集的相关信息'''\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d2404aea9ff2674f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.178176Z",
     "start_time": "2024-04-19T03:25:20.166470Z"
    }
   },
   "outputs": [],
   "source": [
    "'''重置训练集索引'''\n",
    "df = df.reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "f981186ca6301a8d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.208137Z",
     "start_time": "2024-04-19T03:25:20.184564Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   city  hour  is_workday  weather  temp_1  temp_2  wind   y\n0     0    22           1        2     3.0     0.7     0  15\n1     0    10           1        1    21.0    24.9     3  48\n2     0     0           1        1    25.3    27.4     0  21\n3     0     7           0        1    15.7    16.2     0  11\n4     1    10           1        1    21.1    25.0     2  39",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>city</th>\n      <th>hour</th>\n      <th>is_workday</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>temp_2</th>\n      <th>wind</th>\n      <th>y</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>22</td>\n      <td>1</td>\n      <td>2</td>\n      <td>3.0</td>\n      <td>0.7</td>\n      <td>0</td>\n      <td>15</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.0</td>\n      <td>24.9</td>\n      <td>3</td>\n      <td>48</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>25.3</td>\n      <td>27.4</td>\n      <td>0</td>\n      <td>21</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0</td>\n      <td>7</td>\n      <td>0</td>\n      <td>1</td>\n      <td>15.7</td>\n      <td>16.2</td>\n      <td>0</td>\n      <td>11</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1</td>\n      <td>10</td>\n      <td>1</td>\n      <td>1</td>\n      <td>21.1</td>\n      <td>25.0</td>\n      <td>2</td>\n      <td>39</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''查看训练集数据'''\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "b67a589dbc588f29",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.236491Z",
     "start_time": "2024-04-19T03:25:20.213033Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 9986 entries, 0 to 9985\n",
      "Data columns (total 8 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   city        9986 non-null   int64  \n",
      " 1   hour        9986 non-null   int64  \n",
      " 2   is_workday  9986 non-null   int64  \n",
      " 3   weather     9986 non-null   int64  \n",
      " 4   temp_1      9986 non-null   float64\n",
      " 5   temp_2      9986 non-null   float64\n",
      " 6   wind        9986 non-null   int64  \n",
      " 7   y           9986 non-null   int64  \n",
      "dtypes: float64(2), int64(6)\n",
      "memory usage: 624.3 KB\n"
     ]
    }
   ],
   "source": [
    "'''查看训练集的相关信息'''\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "10bedfe5880da383",
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.660978Z",
     "start_time": "2024-04-19T03:25:20.242835Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''绘制箱型图'''\n",
    "df.boxplot(column='y')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "a38bbae4515f748",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:20.975136Z",
     "start_time": "2024-04-19T03:25:20.661959Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''以weather为分类标准，绘制y的箱型图 '''\n",
    "df.boxplot(column='y', by='weather')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "84a26d0d04a74674",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:21.724564Z",
     "start_time": "2024-04-19T03:25:20.988314Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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AhEREZVSRTrRx8SJExEYGIghQ4bA1tYWn3/+OTp37lyUVSAiIqJSqEgTGmtra/z444/48ccfi/JpiYiIqJRj5xUiIiKSPSY0REREJHtMaIiIiEj2mNAQERGR7DGhISIiItljQkNERESyx4SGiIiIZI8JDREREclekU6sZwwKhfZltCmr6/OW9JimiiuXmKaKK5eYpoorl5imiiuXmKaKK5eYpoorl5imilvcMbV9XoUgmGLhciIiIqKiw0tOREREJHtMaIiIiEj2mNAQERGR7DGhISIiItljQkNERESyx4SGiIiIZI8JDREREckeExoiIiKSPSY0REREJHulKqFJS0vDt99+i6ZNm6JVq1ZYs2aNUeOnp6fDz88PoaGhBsd68uQJAgIC0Lx5c7Ru3RqzZ89GWlqaQTHv37+P4cOHw9vbG23btsXq1asNrmduI0eOxDfffGOUWAcPHoSHh4fkJyAgwKCY6enpmDZtGpo1a4aWLVti/vz5MHQi7J07d+arp4eHBzw9PQ2K++jRI3zyySd488030b59e/z6668GxQOAuLg4BAQEoGnTpujUqRN27txpUDxN7/eoqCgMHToUjRs3Rvfu3XHy5EmjxAWy37+NGjUySrxLly7hgw8+gLe3N7p06YJt27YZJe6JEyfQq1cvNGrUCL169cKxY8cMjqmWlJSE1q1b6/W6aYo7Y8aMfO/bjRs3GhQzOjoaI0aMgJeXFzp16oS//vrLoHp+8803Gs+vwYMHGxQXAM6dO4e+ffuicePGeOedd3D69GmDY169ehXvv/8+vL298d577+HSpUtaxXrV572+55Q23yH6nFOviqvvefWqmIaeUxJCKfL9998LPXv2FK5evSocOHBA8Pb2Fvbv32+U2KmpqcLo0aMFd3d3ISQkxKBYWVlZwnvvvSd8/PHHwn///SeEhYUJnTp1En744Qe9Y6pUKqFz587C+PHjhXv37glHjx4V3nzzTWHPnj0G1VVt7969gru7uzBhwgSjxFu6dKnwySefCE+fPhV/EhISDIo5ZcoUoXPnzsLly5eF06dPCz4+PsKWLVsMipmSkiKpY3R0tNCpUydh5syZBsV97733hP/973/CvXv3hIMHDwpeXl7CgQMH9I6XlZUlvP/++0L//v2Fa9euCYcPHxaaNWsm/PPPP3rF0/R+z8rKEnr27CmMHz9euHPn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MXToUOHNN98UOnbsKKxdu9bguoaHhwsDBw4UvLy8hB49egiHDx82uJ553+8RERHCRx99JLzxxhtCjx49hFOnThklriBkz/Oi7zmQO56/v7/Gc0ufOany1vPixYtC//79hUaNGgndunUTgoODDY6ZW7t27XSeWK+guAcPHhR69uwpNGzYUOjatatekyzmjXn79m3x9e/cubNRYl66dElwd3c3aG4nTXGDg4OFXr16CY0bNxb69Omj13s1b8wjR44IXbt2Fby8vITBgwcLd+7cKTRGYZ/3+pxT2n6H6HpOvSquvudVYXU1xjmlphAEA+eGJyIiIipmpeaSExEREZVdTGiIiIhI9pjQEBERkewxoSEiIiLZY0JDREREsseEhoiIiGSPCQ0RERHJHhMaIiIikj0mNERU5B48eAAPDw88ePCguKtCRKUEExoiIiKSPSY0REREJHtMaIio2AQHB6Njx47w8vLCp59+ioSEBADAxYsXMWDAADRu3Bjt27fHli1bxMd88803+OabbyRxPDw8EBoaCiB7NfO5c+eiVatW6N27N7hcHVHZYF7cFSCismvXrl2YP38+BEHAmDFjsGrVKvTp0wdDhgzB0KFDMXPmTFy+fBnTpk2Dk5MTOnXqpFXcP//8E0FBQRAEAQqFwsRHQUQlARMaIio2X331FRo1agQA6NatG27evInff/8d9evXx7hx4wAAtWvXRnh4OFavXq11QtOrVy94eHiYrN5EVPLwkhMRFRtXV1fxtp2dHdLS0hAeHi4mOWre3t4IDw/XOm61atWMVkcikgcmNERUbMzM8n8EWVpa5tuWlZUFlUoFAPkuIWVmZmoVg4hKNyY0RFSi1KpVC5cvX5Zsu3jxImrVqgUAKFeuHF6+fCnui4qKKtL6EVHJxISGiEqUDz/8EDdu3MD8+fNx79497Nq1C5s3b8ZHH30EAGjYsCFOnTqFM2fO4L///sP333+PcuXKFXOtiai4sVMwEZUoVatWxYoVKzBnzhysWbMGVatWxTfffIN+/foBAN555x1cuHABo0aNgp2dHcaOHYv79+8Xc62JqLgpBE7SQERERDLHS05EREQke0xoiIiISPaY0BAREZHsMaEhIiIi2WNCQ0RERLLHhIaIiIhkjwkNERERyR4TGiIiIpI9JjREREQke0xoiIiISPaY0BAREZHs/R+3/pf/2LtVDwAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''以hour为分类标准，绘制y的箱型图 '''\n",
    "df.boxplot(column='y', by='hour')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "f9dac3ce34086c9e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:21.981069Z",
     "start_time": "2024-04-19T03:25:21.727985Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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60ZISIgRFxdnGIZhTJ482QgJCTG2bt1qq0lMTDRCQkKMjz76yG7e5cuXGyEhIca6detsr+dTTz1lVxMXF2e3/KVLlxohISHG1KlTbTVZWVnGww8/bDzyyCOGYRjGpk2bjJCQEGPVqlV2y/q///s/o2nTpsb169eNixcvGmFhYca4cePsavr372+EhIQYx48fv+1rERsbazRp0sS4evWqre2bb74xQkJCjO+++84wDMMYP368ERkZaVy5csUwDMNIS0sz6tevb/e+uNXQoUON2NhYwzAMY+fOnUZISIixfft22/SjR48aY8eONU6fPn3bZdyqX79+Rr9+/WyPH3jgAaNr16629RiGYTz55JO2bf/SSy8ZMTExtveSYRjG9evXjXbt2hndu3c3DON/78Phw4fbrSt7258/f97o1KmT8dBDDxnnz5+3Tf/++++NkJAQY/369ba2q1evGjExMXb9GTx4sPHpp5/aLXvNmjVGSEiIsXPnTsMwDGPhwoVGaGiocezYMVtN27Ztc3zGAEdhDw2KvbCwMC1ZskRLlizR4sWL9cknn6h3796aOHGiJk6cKEnatWuXrFarOnfubDdvgwYNVKlSJbv/fF955RWVL19ezz//vCpVqqRXXnklxzq7dOli97hdu3a6fv26bcjgZlu2bFFUVJQqVapk1/7nP/9ZSUlJOnz4cJ6e565du3Tt2jW1b9/erv3W55Stdu3adn2QpE6dOtnVdOrUSW5ubrbhpPzo2rWr7WeLxaI2bdpo9+7dunbtmn788UdZLBa1aNHCtvcsIyNDrVq1UlJSkhITE7Vr1y5dv35dsbGxdsvt0KFDntbfokUL+fj42B63atVK7u7u2rp1qySpe/fuSk1N1TfffCNJ+uabb5Samppj293Offfdp4CAAD3//PN644039M033ygoKEh///vfdc899+RpGZLUsmVLbd++XVarVb/++qvOnDmj559/XidPntTJkyd15coV7dy5Uy1btpR0Y1vFxsbK19fXtgx3d3d16tRJe/bs0dWrV23tN2/jmz399NNKTEzU8OHDVbZsWVv7tm3bVLJkSTVv3tzW5uPjoxYtWtjNP378ePXu3Vvnz5/Xtm3btHTpUtvexOzh2E6dOsnLy8u2l2bHjh06cuSI3fsCcCQOCkaxV6pUKdWrV8+urVmzZkpNTdXHH3+sXr162Y7LCAoKyjF/UFCQ3RBCqVKl1LZtW82aNUuNGzeWl5dXjnnKly9v9zh7OCq34z8uXryoKlWq5LpeSbZjG+4k+/iQm4e+JCkwMDDX+lKlStn1QZKCg4Ptatzd3VW2bNk8D6Hc7NZhscDAQBmGoUuXLiklJUWGYah+/fq5znv27Fnb8775D25ufbydW+tKlCihsmXL2pZbtWpVNWrUSMuXL1eXLl20fPlyNWnSJMe2u51SpUpp3rx5mj59ulavXq1FixbJy8tLDz/8sF577TV5eHjkaTktW7bU6NGjtWPHDh0+fFjVq1dXbGysfHx8tHXrVvn4+MhisahZs2aSbmyr271PDcPQlStXbG03B7qbpaWlqXLlyho/frwWLVqkEiVK2Jbt7++f49iyW1/Ln376SW+99ZZ++ukneXt7609/+pMqVqwo6X/XSvL19VX79u31xRdf6IUXXtDy5ctVvXp1RUVF5el1AfKLPTRwWXXr1lVGRoZOnDihMmXKSLpxPMutkpKS7P6o/vLLL/rXv/6l2rVra8GCBUpISMgxz4ULF+wenzt3TlLu4aJMmTJKSkrKdb1Szj/ot5O9VyB7Xdmyg87vyX7+t/bj+vXrunDhgl0fMjMz7WpSU1NzXWZKSord4+TkZLm5ucnf31+lS5eWj4+Pbc/ZrV9RUVG2dd76fG5d7u3cWpd9yv7N26B79+7asmWLDh06pB9//NHumKq8qFGjhsaNG6e4uDgtXLhQXbt21aJFi/TZZ5/leRlVqlRRjRo19OOPPyouLk6NGjVSyZIlVb9+fcXHx2vDhg1q2LChbY9MmTJlbvs+lfL2fpkzZ47efPNN7d69266vZcuW1YULF3Js45tfy+xjh3x8fLRq1Srt2LFDS5YsyfW16969u44ePardu3drzZo16tatW55eE+CPINDAZe3evVtubm6qUqWKIiIi5OHhoZUrV9rVbNu2TadOnbLtScjIyNCrr76qe++9VwsXLlStWrU0dOhQuzOBJOnbb7+1e7xmzRp5e3srIiIiRz8aNmyonTt36uTJk3btX3zxhYKDg1W1alVJsv0XfTu1atVS6dKlbUMo2b7++uvfnU+S7fo2q1atsmtftWqVMjMzbQfJ+vr66syZM3Y1tzsj6ObXwDAMff3114qOjpaHh4caNWqk1NRUGYahevXq2b5++eUXffjhh8rIyFBUVJS8vLxynB31/fff3/H5SNLmzZuVkZFhe7xmzRplZGQoJibG1tauXTt5e3tr5MiRKlWqlFq3bp2nZUvSV199pfvvv19JSUlyc3NTVFSURo4cKT8/P506dSrPy5Fu7KWJj4/X9u3bbf2LiYlRfHy8Nm7caDfs1rBhQ33//fd2e2IyMzO1atUq1atXL097hoKDg/XAAw+oQ4cOmjRpku2sucaNGysjI8Nu21mtVm3evNn2+PDhw0pJSVGvXr30pz/9yfa+3LBhgyTZnRHVsGFDVatWTePGjdPly5f18MMP5+t1AfKDIScUe1euXLE7ldZqteq7777T0qVL9eijj9qGaJ599ll9+OGHKlmypGJjY3XixAlNmjRJf/rTn2zj/jNmzNDevXs1f/58eXl5adSoUXrkkUc0ceJEuyvTrl69WoGBgWrRooW2bNmiefPm6eWXX851CKBv37764osv1KdPH73wwgvy9/fX8uXLFRcXp3fffdf2B8PPz0979+7Vli1bFB4enmOoy9fXV08//bQmT54sb29vNWrUSFu2bNGCBQsk/X4gyn6OkydPVlpamho2bKh9+/Zp6tSpiomJsR1TERsbq++++05jxoxRq1attG3bNruzkm42duxYpaenq3r16lq8eLEOHTqkOXPmSLpxfEvDhg01YMAADRgwQDVr1tTu3bs1efJkNW/e3LZNBgwYoH/84x/y9vbW/fffr/Xr1+c50CQlJenFF19Uz549deTIEU2YMEFNmzZV48aNbTXe3t7q1KmTFi1apMcffzzPw0SSVL9+fWVlZWngwIF69tlnVapUKa1evVqXL1/O91k8LVq00KxZsyT9L1zef//9tjO6bg40L7zwgjZs2KBevXrp2WefVcmSJTV37lwdP35cH3/8cb7WO3z4cG3cuFFvvvmmPvnkEzVu3FjNmjXTa6+9pnPnzqlSpUr67LPPdP78eduererVq8vX11czZsyQu7u73N3dtWbNGi1ZskTSjeGsm3Xv3l3jx4/XAw88kOfhPOAPKcojkoG7LbeznOrVq2d06tTJmD59umG1Wu3q58+fb3Ts2NEICwszmjZtaowcOdJISUkxDMMw9u3bZ4SFhRkjR460m2fMmDFGrVq1jG3bttnOLpk+fbrRt29fo169ekbbtm2N+fPn281z81lOhmEYx44dM1566SWjQYMGRkREhPHoo48a3377rd08//nPf4zGjRsbdevWtTtD6WZZWVnGtGnTjBYtWhhhYWHGE088YcyePdsICQkx9uzZYxjG/850uVVGRoYxbdo048EHHzTCwsKM2NhYY8KECca1a9fsasaNG2c0adLECA8PN/r3729s374917OcVqxYYXTs2NGoV6+e8eijj9qmZ7t69arx7rvvGg888IARFhZmtGrVyhg/frzd+gzDMD777DPjwQcfNOrWrWv07NnTmD9/fp7OcnrvvfeMESNGGJGRkUajRo2MkSNH2p31lG3t2rVGSEiIkZCQcNvlZbv5LCfDMIyEhASjX79+RqNGjYx69eoZ3bp1M77++us7LudWVqvViI6ONtq1a2dry8jIMOrXr2906NAhR/3evXuNp59+2oiMjDSioqKM3r17270nst+HS5cutZsvt20/d+5cIyQkxPj8888NwzCM1NRU4+233zZiYmKMyMhIY/jw4cbo0aPtnndcXJzRrVs3Izw83GjcuLHRr18/Y9u2bUZUVJTx/vvv2y1///79RkhIiPHll1/m+3UB8sNiGNztDnCUEydO6MEHH9SYMWMK/XiBjIwMrVy5UjExMapQoYKtfd68eRo9erTi4+Pl5+d31/uxbNkyDRs2TGvXrlXlypXv+voK6s0331RCQsJt9zShYGbOnKlPP/1U69aty9ceMCC/GHICigl3d3f985//1Jw5c/TXv/5VZcuW1S+//KJ//OMf6tKlS6GEGTP57LPPdPjwYf373//WuHHjHL78m4/fuZ0SJUrc8dgos/r888/1yy+/aP78+RowYABhBncdgQYoRmbMmKEJEyZo5MiRunTpkipWrKjevXvrueeeK+quOZ1t27Zp48aN6t27922v1VMQYWFhd6zp2rWr3nvvPYev2xns379fCxcuVJs2bdSvX7+i7g5cAENOAHAX/PTTT3esKVu2rCmG5QAzINAAAADTK56DtwAAwKUQaAAAgOkRaAAAgOkRaAAAgOkRaAA4pffff1/h4eE57vQ9bdo0RUdH57jEPgDXRqAB4JR69Oih9PT0HDenXLFihTp27Chvb+8i6hkAZ0SgAeCUatasqaioKK1YscLWtmPHDh05cqTQbysBwPkRaAA4re7du2vbtm06efKkpBuX069evbqioqKKuGcAnA2BBoDTyh5aWrFihdLT07V69Wr2zgDIFfdyAuC0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fv31V23atEkfffSRMjMz1b59ew0aNEhJSUn605/+ZFcfGBioxMTEfK/nv5kIJpC9rSyWgm+3m5dVUI7sF4Dc8fmHo+R1Ozks0Jw6dUppaWny8PDQP/7xD504cUKjR4/WtWvXbO038/DwkNVqzfd6AgNLO6rLuMv807NufPcvpaAgx2w3R2z/u9EvAPb4/KOwOSzQVKpUSfHx8SpTpowsFotq166trKws/f3vf1ejRo1yhBer1SovL698r+fcucsyDEf1GndTSspV2/dkz4KNblosN36ZOWL7O7JfAHLH5x+Okr3978RhgUaS/P397R7XrFlT6enpCg4OVnJyst205ORklStXLt/rMAwRaEwiezs5cps5Yll3o18A7PH5R2FzWDzduHGjYmJilJaWZmvbt2+f/P39FR0drZ07d8r477vHMAzt2LFDERERjlo9AABwYQ4LNFFRUfL09NRrr72mw4cPa/369Ro7dqyefvpptW/fXpcuXdI777yjgwcP6p133lFaWpo6dOjgqNUDAAAX5rBA4+vrq08++UTnz59X9+7dNWLECD366KN6+umn5evrq48++kjbt29Xt27dlJCQoJkzZ8rHx8dRqwcAAC7MocfQ3HfffZo9e3au08LDw/X55587cnUAAACSuDklAAAoBgg0AADA9Ag0AADA9Bx6DA0AANks7pd0LDVRJS6WKthyLNJZi49SLqYW+Noxx1KvyuJ+qWALgVMi0AAA7oqS/vF6b9/aou5GDiX9H5TUoqi7AQcj0AAA7orrKTF684GuqhZQ8D00/v4+Skkp+B6aI+ev6rXEUwVbCJwSgQYAcFcYGX661+c+hZQp2E0gLRYpKLC0ko2C38sp69plGRlXCrYQOCUOCgYAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKZHoAEAAKbHlYJxV3FzOgBAYSDQ4K7i5nQAgMJAoMFdxc3pAACFgUCDu4qb0wEACgMHBQMAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANMj0AAAANNzL+oOAACK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1qh27dqqWrWqA15NAI5GoAGQJ+7u7rp+/bruueceVapUSf369dO0adPk6el5x3mbNm1qCzTbtm3TAw88oISEBGVmZurAgQOyWq2KjIzUv//9b9WpU0eDBw9WjRo11LVrVz311FP6+OOPbcuqV6+eWrVqpfDwcFvb4cOH9de//lVDhw5Vx44dJUk//PCDUlJSNHLkSNWsWVNPPvmkWrdubZvHx8dH77zzjtq2bavKlSurffv2qlOnjhITEyVJnTp10ldffWWrX716tTp16lSwFxHAXUOgAZAnpUuXVsuWLdW3b1+1b99eH3zwgSpXrixvb+87ztu8eXNt3bpVhmFo69at6tatmzw8PLRv3z798MMPatKkidzd3XXo0CG7oCJJUVFROnTokO1xpUqVciz/nXfe0cWLF1WhQgVb28GDB1WtWjX5+PjY2urVq2f7uW7duqpVq5YmT56sQYMGqV27dkpISFBWVpYkqX379jp58qT27dun5ORk7dixwxaWADgfAg2APLFYLProo4+0ePFitWvXTt9//726du2qffv23XHeyMhIpaen68CBA9qxY4caNGig+vXra8eOHbbhJkm57u3JyspSZmam7XFuNY899pj69u2r0aNHy2q12toNw7CrK1mypO3njRs3qlu3bkpOTlbz5s01efJk1a9f3zY9ICBAjRs31po1a/T1118rIiJC99xzzx2fK4CiQaABkCfp6el6//33FR4erpdfflmrVq1ShQoVbAfg/h53d3fdf//9mjdvnoKCghQUFKQGDRroxx9/1NatW22Bpnr16kpISLCbd+fOnapevfrvLr9NmzYaOHCg0tLSNHPmTEnSfffdpyNHjujy5cu2upvD1+LFi9W9e3e9/fbbeuSRR1SzZk0dO3bMLgR17txZ33//vdavX89wE+DkCDQA8uTy5ctasGCBpk2bpuPHj2vdunU6efKk6tSpk6f5mzZtqs8//9y2F6RBgwb6/vvvVblyZduejyeeeEL79u3ThAkT9Ouvv+rzzz/X/Pnz9eSTT95x+b6+vho8eLD++c9/6sSJE2rSpIkqVKigESNG6NChQ1q2bJm+/PJLW72/v7927typAwcOKDExUa+++qqSkpLs9vC0bt1aR44c0ZYtW9S+ffv8vFwAChmBBkCeBAUFacqUKVqzZo06deqkt99+W4MHD1azZs3yNH/z5s11/fp1RUdHS5Lq1KkjLy8v294ZSapYsaI++ugjbdy4UQ899JCmT5+uV199Vd27d8/TOrp27aqQkBCNHj1aJUuW1EcffaSLFy+qa9euWrBggV0weuGFFxQYGKhHH31Uffv2laenpx5//HG7vTi+vr564IEHFBkZqcDAwDz1AUDRsBi3DjIDAGwee+wxPfLII3kOVQCKBlcKBoBcxMXFaceOHTp06BDDTYAJEGgAFMju3bvVu3fv206vWLGiVq1aVYg9cowVK1Zo7dq1evvtt1WqVKmi7g6AO2DICUCBWK1WnT59+rbT3d3dc712DAA4EoEGAACYHmc5AQAA0yPQAAAA0yPQAAAA0yPQAAAA0yPQAAAA0yPQAAAA0yPQAAAA0/t/C5YXEEoUMgIAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''以is_workday为分类标准，绘制y的箱型图 '''\n",
    "df.boxplot(column='y', by='is_workday')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "ac80c8948fbcf3a0",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:22.001310Z",
     "start_time": "2024-04-19T03:25:21.988175Z"
    }
   },
   "outputs": [],
   "source": [
    "'''剔除离群点,经验:差值大于3倍标准差的数据的出现概率很小，因此按照经验规则删除离群点（噪点）'''\n",
    "df = df[np.abs(df.y-df.y.mean())<=(3*df.y.std())]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "6ec9bbc6d352915c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:22.037056Z",
     "start_time": "2024-04-19T03:25:22.006551Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 9873 entries, 0 to 9985\n",
      "Data columns (total 8 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   city        9873 non-null   int64  \n",
      " 1   hour        9873 non-null   int64  \n",
      " 2   is_workday  9873 non-null   int64  \n",
      " 3   weather     9873 non-null   int64  \n",
      " 4   temp_1      9873 non-null   float64\n",
      " 5   temp_2      9873 non-null   float64\n",
      " 6   wind        9873 non-null   int64  \n",
      " 7   y           9873 non-null   int64  \n",
      "dtypes: float64(2), int64(6)\n",
      "memory usage: 694.2 KB\n"
     ]
    }
   ],
   "source": [
    "'''查看删除离群点后共有多少条数据'''\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "c427259b93aa9fd4",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:22.739182Z",
     "start_time": "2024-04-19T03:25:22.042193Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 2000x1600 with 2 Axes>",
      "image/png": "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X52DDjoop5xySmbPnt2l2nRIAwAAAABUkeOOOy5HHXVUu2sdg+ckGTRoUKfg+a33Bw8e3O76t7/97Wy44YY54ogjkiRnnnlm9ttvv/z85z/Pscceu9y16ZAGAAAAAKgi9fX1GTZsWLu3ZQXSY8eOzZw5c9LS0rL02syZMzN48OCMGDGi3drHH388G2+88dL3y+VyNt5448yYMaNLtemQBgAAAACqUqlc6usS+rVNNtkktbW1eeihh7LNNtskSe6///5sscUWKXcYjrjqqqvmueeea3ftL3/5S7bYYosufU4d0gAAAAAAA1BDQ0MOPvjgnH766XnkkUdyyy235LLLLssnP/nJJEu6pRcvXpwkOeyww3L11Vfn+uuvz4svvphvf/vbmTFjRiZNmtSlz6lDGgAAAABggDrllFNy+umn51Of+lSGDRuWE044IXvvvXeSZJdddsnZZ5+dQw45JPvvv38WLFiQiy++OK+++mo22WSTXH755Rk9enSXPp9AGgAAAABggGpoaMi5556bc889t9NjTz31VLv3Dz300Bx66KHv6vM5sgMAAAAAgELokAYAAAAAqpKhhv2PDmkAAAAAAAohkAYAAAAAoBACaQAAAAAACiGQBgAAAACgEIYaAgAAAADVqawft79xRwAAAAAAKIRAGgAAAACAQnQrkD7kkEPy1FNP9XQtAAAAAABUsW4F0n/9619TU1PT07UAAAAAAFDFujXU8OCDD85nPvOZHHjggRk3blwGDRrU6XEAAAAAgL5UKpX6ugQ66FYg/etf/zrlcjm/+tWvOj1WKpUE0gAAAAAAdNKtQPq2227r6ToAAAAAAKhy3Qqk77333n/4+LbbbtutYga62prk8L2H5r0b1aW5Jbn5nsW55Z7Fy1w7fmxNjthnaMatUpMZs1rzk5sWZNprrZ3W7bfj4Kw6qiaX37igt8sHAAAAAPiHuhVIT548eZnX6+vrs8oqq+TWW299V0UNVB/ZY0jWXr0m3/3feRk9spwjPzgsr7/Zmgeeam63rr4uOeHQ4bn78cb8+Mb52W3C4Bx/6PB89eI30vSOpdtuUp8P7dqQux9vKvgrAQAAAIC+VyqX+7oEOuhWID116tR277e2tmbatGk588wz86EPfahHChto6uuSnbcclPOnzMv011oz/bXW3DxmUXafOLhTIL3NJvVpaqnk57cvSpJc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BdKXXHJJGhsbs9tuu+XDH/5wttlmm4waNaqnawMAAAAA6L5Sua8roINuBdL33XdfHn300dx777255ppr8pWvfCWjR4/OxIkTs80222TSpEk9XScAAAAAACu4bgXStbW1mTBhQiZMmJBjjz02U6dOzVVXXZXrrrsu1157rUAaAAAAAIBOuhVIP/vss7n77rtzzz335L777ktjY2O23377nHLKKdl11117ukYAAAAAAKpAtwLpAw88MJtvvnl22mmnTJ48ORMmTEhNTU1P1wYAAAAA0H1lZ0j3N90KpO+8886stNJK/3Tdhz70ofzgBz/I6quv3p1PAwAAAABAFenWSwTLE0YnyUsvvZSWlpbufAoAAAAAAKqMnnUAAAAAAAohkAYAAAAAoBDdOkMaAAAAAKDfK5X6ugI60CENAAAAAEAhejWQLnkFAgAAAACAv+nVQLpSqfTm0wMAAAAAsALpdiA9d+7cNDY2JkmmTp2aSy65JHfddVe7NVdccUVWW221d1chAAAAAABVoVuB9C233JLddtst999/f1588cUcccQRue666/K5z30u//M//7N03RZbbJG6uroeKxYAAAAAYLmVygPzrR/rVnX/+Z//mRNPPDE77bRTpkyZktVXXz033nhjvvvd7+ayyy7r6RoBAAAAAKgC3Qqkp02blv322y9Jcuutt+YDH/hAkmSDDTbI66+/3nPVAQAAAABQNboVSK+xxhq5++67c9ddd+Uvf/lL9thjjyTJL3/5y6yzzjo9WR8AAAAAAL2ksbExX/7yl7PNNttkl112+YcnYDz11FM5/PDDs+WWW+ZDH/pQ/vznP3f589V2p8gTTzwxX/rSl9LS0pLdd989W2yxRc4999z89Kc/zQUXXNCdpwQAAAAAoGDnnXdeHnvssVx++eWZMWNGTj755KyxxhrZd999262bN29ejj766Oyxxx4555xzcsMNN+T444/Pb3/724wePXq5P99yB9IzZszI6quvnlKplK233jpXXXVV6uvrM3z48MyYMSOHHXZY9ttvv4wZM2b5v1oAAAAAgN5SKvV1Bf3awoULM2XKlPzwhz/MZpttls022yzPPPNMfvKTn3QKpK+77roMGTIkp59+empqanLiiSfm97//fR577LG8733vW+7PudyB9B577JE77rgjo0ePzh577JHSMm5mpVJJqVTKk08+udwFAAAAAABQvKlTp6alpSUTJkxYem3ixIm56KKL0tbWlnL57ROf77nnnuy5556pqalZeu3nP/95lz/ncgfSt956a0aNGrX0zwAAAAAA9D9NTU1pampqd62+vj719fXtrs2cOTMrr7xyu+tjxoxJY2Nj3njjjaV5cJJMnz49W265ZU499dTcdtttGTduXE4++eRMnDixS7UtdyA9bty4Zf4ZAAAAAID+4+KLL+406+/444/PCSec0O7aokWLOoXUb73fMdBeuHBhfvCDH+STn/xkfvjDH+bGG2/Mpz/96fzmN7/J6quvvty1dWuoIQAAAAAA/dNxxx2Xo446qt21jsFzkgwaNKhT8PzW+4MHD253vaamJptssklOPPHEJMmmm26aO+64IzfccEP+5V/+ZblrE0gDAAAAANXpHWcgDyTLOp5jWcaOHZs5c+akpaUltbVLouKZM2dm8ODBGTFiRLu1q6yySt7znve0u7bOOuvklVde6VJtA/OOAAAAAAAMcJtssklqa2vz0EMPLb12//33Z4sttmg30DBJtt566zz11FPtrj3//PNdPt5ZIA0AAAAAMAA1NDTk4IMPzumnn55HHnkkt9xySy677LJ88pOfTLKkW3rx4sVJko997GN56qmncv755+fFF1/Mf/3Xf2X69Ok56KCDuvQ5BdIAAAAAAAPUKaecks022yyf+tSncsYZZ+SEE07I3nvvnSTZZZdd8utf/zpJMm7cuFxyySW5/fbbc8ABB+T222/PD37wg4wdO7ZLn88Z0gAAAABAVaqUSn1dQr/X0NCQc889N+eee26nxzoe0TFx4sRce+217+rz6ZAGAAAAAKAQAmkAAAAAAAohkAYAAAAAoBACaQAAAAAACmGoIQAAAABQnUr6cfsbdwQAAAAAgEIIpAEAAAAAKIRAGgAAAACAQgikAQAAAAAohKGGAAAAAEB1MtSw33FHAAAAAAAohEAaAAAAAIBCCKQBAAAAACiEQBoAAAAAgEIYaggAAAAAVKVKqdTXJdCBDmkAAAAAAAohkAYAAAAAoBACaQAAAAAACiGQBgAAAACgEIYaAgAAAADVqaQft79xRwAAAAAAKIRAGgAAAACAQgikAQAAAAAohEAaAAAAAIBCGGoIAAAAAFSnUqmvK6ADHdIAAAAAABRCIA0AAAAAQCEE0gAAAAAAFMIZ0gAAAABA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JvQOWzTkuI+snE98ZUaS5M+PLs4qK8/P0QePTG1NKfc+vig//e3cJMnETQanpqaUg98/PAe/v33X9Vsfz8B0/Z8ac+jug3L8pIYsaqrkprub8shzS17EPPPTQ3PV7xbnnqktaWxOfvirxTl090HZcfO6vDKrLT/4xeI0DezTOAAAAKBqlSqVrv1ixA477JCvf/3r2XvvvbPvvvvm/PPPz7rrrpt///d/T0NDQ84888xuFXLcOa936+OgKxbMc6QEvW/MaiP6ugQGgK98TKd4V5RKS87bmzXLGYX0HvuMIthnFME+owj2WfessoozpLtq5uN393UJfWKVzbbv6xL+rvI/X9Le/Pnzs/nmmydJNtxwwzzyyCOpra3Ncccdl9///vc9XiAAAAAAANWhy4H0+PHj88QTTyRJNthggzzyyCNJkkqlknnzOg9FAwAAAACApBtnSB999NE56aST8o1vfCP7779/DjnkkNTW1ubBBx/MxIkTe6NGAAAAAACqQJcD6UMPPTTrrLNOhgwZkvXWWy8XXHBBpkyZks033zwnnHBCb9QIAAAAAEAV6HIgnSTbbrttkuTNN9/MzjvvnF122SWlUqlHCwMAAAAAeFdklv1Ol8+QrlQq+e///u9sv/322XHHHfPyyy/npJNOymmnnZampqbeqBEAAAAAgCrQ5UD6wgsvzC9+8Yucc845qa+vT5JMmjQpd9xxR84777weLxAAAAAAgOrQ5UD6uuuuy9e//vW8//3vX3pMx84775xzzz03v/nNb3q8QAAAAAAAqkOXA+nZs2dn1VVX7XR9xIgRWbhwYY8UBQAAAABA9elyIL3DDjvk0ksvbXdt/vz5+e53v5vtt9++xwoDAAAAAHg3KikPyLf+rMvVnX766XniiSey8847p7GxMZ/73Ofyvve9Ly+//HK++tWv9kaNAAAAAABUgdqufsAXv/jF7Lnnnqmtrc2QIUPS0tKSddddN7vsskvK5f6dvgMAAAAA0He6HEgfdNBBueOOO3L33XenpqYmO++8c0aNGpU333wzK6+8cm/UCAAAAABAFehyIH3YYYflsMMOS6VSyRNPPJG77ror1157bU455ZRssskmmTJlSm/UCQAAAADQJZVSqa9LoIMuB9JJ0tramscffzwPPPBAHn744Tz99NOpr6/PiBEjero+AAAAAACqRJcD6cmTJ+ex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DRs21MSJE/1t/v73v+vf//63pGs7xrp166YWLVoEjShbunSp6tevr59++kmStHv3bvXt21cNGjTQfffdp6SkpID2c+bMUadOnVS3bl01a9ZMo0ePltvt1rFjx1SzZk1t2bLF3/b06dOqXbu2Dhw4kL0/IG6Ybt266cMPP/Q/HjBggO69917/408//VR9+/bVsWPH9Mgjj6hBgwZq27at3njjDbndbn+7K/27//LLLxo5cqSOHDkScEvyiRMnNHDgQNWrV08dO3bUypUr/a91/vx5DR8+XI0bN1ZCQoJeeuklpaenS/JNo9W2bVu98MILatKkid59992c/hPhBsp8HbVz5071799f9evXV8eOHTVr1ix/20mTJumpp57SSy+9pEaNGqlt27Zavny5PvzwQ7Vs2VLNmzfXjBkz/O1r1KihOXPmqH379mrUqJH+/ve/KyUl5ZprW7FihaZNm6YOHTrc0PcM4+XV42zgwIEaMGBA0Pbk5OQ//6aRJ11LH3vLLbcE9I81atTQggUL1KVLF9WtW1f33HOPDh065H/O2rVr1aNHD9WvX19PPPGE0tLSjHtDyPeeffZZPfLIIwHbXnrpJQ0fPjyXKgJgNALpPCgjI0MPPvigIiIiNHv2bD3//PP697//rdTUVH+bSZMmqWTJknrmmWc0atQo3XHHHVqyZIk/BExOTtby5ct1xx135NbbQB42b948vf7665oxY4a2bNmiKVOmaM+ePbr//vt10003ae7cuRo6dKgmTJigb7755ppf9/PPP9e0adP0yiuvyGQy5eA7wI125swZPfXUUxo8eLAWL16sXr166cknn9TZs2f/8HlFixZVnTp1tHr1aknSb7/9pvT0dP98mV6vV6tWrVLr1q2v6RhbsGCBhg0bpsmTJ6tixYr+7evXr9fw4cP1yiuvqHXr1nI4HHr44YdVrlw5zZ07Vx07dtSnn37qb7969WqNHTtWTz75pBYvXqzRo0frs88+07Jly1SqVCk1adJEX3/9tb/9119/rVq1aqlChQo34K+J65GQkOA/jpxOp3799Vf99ttvcjqdknwhXUJCgoYMGaLY2FjNmzdP48eP1+eff+6fhuOP/t0bNWqkZ555RiVLlgy4JXn+/Pnq3LmzvvzyS9WtW1dPPfWUvy8dNWqUkpOT9fHHH+utt97Sb7/9pjFjxvhrPnLkiBwOh+bOnasuXboY+efCn5T5OmrQoEFq0qSJFi5cqKefflpvvfWW5s+f72//1VdfKSoqSgsWLFD9+vU1bNgwLV++XDNnzlT//v01YcIEnTlzxt/+v//9r5599lnNmDFDO3fuzNb0Gx9//LFuvvnmG/l2kUvy6nFWp06dgD72xx9/1P79+9W8efMb9daRx1xLH9unT5+g502aNEmjRo3S3LlzlZSU5B/sdObMGQ0ePFgtW7bU/PnzVbVqVS1evNiw94P874477tCKFSt04cIFSZLH49HXX39NfgEUIgTSedDy5ct15swZvfzyy6pWrZratm2rZ599VmbzpX+uIkWKyGKxKCoqSlFRUerQoYPOnDnjD4GWLl2qSpUqqVq1arn1NpCHDR8+XPXr11eDBg10++23a/v27Zo9e7Zq166tJ598UpUrV1bPnj117733aurUqdf8ut26dVONGjVUs2bNHKweOcFqtcrpdKpkyZIqU6aMHnzwQb311lsKCQm56nNbtWrl/5Czdu1a3XLLLdq4caPcbrd27Nghh8Ohhg0bXtMxVq9ePbVt21b169f3b9u7d68effRRPf300+rcubMkaeXKlTp79qxefPFFValSRf369VP79u39zwkPD9e4cePUoUMHlS1bVp06dVLt2rW1a9cuSb6L4Ms/OC1atIgL4FyWkJCgNWvWyOv1asuWLSpfvryio6O1detWeTwe/fLLL7LZbDp69KheeuklVa5cWc2aNdPTTz/tHzX4R//udrtdUVFRQbckd+zYUXfeeafKly+vQYMGKTExUadPn9bBgwe1dOlSvfbaa6pRo4bq16+vl156SfPmzQsYRThw4EBVqFBBpUuXzpW/G67P5ddRixcvVmxsrIYNG6aKFSuqbdu2euSRRwJGoxYtWlRPPPGEypcvr549eyo5OVmjRo1SlSpV9NBDD8nlcgXcYTFo0CC1adNG9erV06hRo7Ro0SJGnxZC+eE4O3jwoEaOHKmuXbuqTp06N+y9I2+5lj62devWQc8bMGCAWrRooerVq6tv377avHmzJN91U7FixTR8+HBVrlxZQ4cOVb169Yx+W8jHmjVrppiYGH377beSfJ8hnE6nWrVqlcuVATCKNbcLQLB9+/apUqVKioyM9G/r1auXf2qErERHR+uWW27R4sWL1aRJEy1atMgf3ACZlS9f3v/fUVFRysjI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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''绘制热力图，只显示下三角'''\n",
    "plt.figure(figsize=(20, 16))\n",
    "sns.heatmap(df.corr(), annot=True, fmt='.2f', cmap='coolwarm', square=True, mask=np.triu(df.corr(), k=0))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "924742156bdc4ac0",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:22.762376Z",
     "start_time": "2024-04-19T03:25:22.743310Z"
    }
   },
   "outputs": [],
   "source": [
    "'''删掉训练集和测试集中一些强共线性的和相关性比较弱的特征，temp_2和is_wokday'''\n",
    "df = df.drop(['temp_2', 'is_workday'], axis=1)\n",
    "df_test = df_test.drop(['temp_2', 'is_workday'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "10524b174b757c67",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:22.794949Z",
     "start_time": "2024-04-19T03:25:22.762502Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   city  hour  weather  temp_1  wind   y\n0     0    22        2     3.0     0  15\n1     0    10        1    21.0     3  48\n2     0     0        1    25.3     0  21\n3     0     7        1    15.7     0  11\n4     1    10        1    21.1     2  39",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>city</th>\n      <th>hour</th>\n      <th>weather</th>\n      <th>temp_1</th>\n      <th>wind</th>\n      <th>y</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>22</td>\n      <td>2</td>\n      <td>3.0</td>\n      <td>0</td>\n      <td>15</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0</td>\n      <td>10</td>\n      <td>1</td>\n      <td>21.0</td>\n      <td>3</td>\n      <td>48</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>25.3</td>\n      <td>0</td>\n      <td>21</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0</td>\n      <td>7</td>\n      <td>1</td>\n      <td>15.7</td>\n      <td>0</td>\n      <td>11</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1</td>\n      <td>10</td>\n      <td>1</td>\n      <td>21.1</td>\n      <td>2</td>\n      <td>39</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''查看数据'''\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "24b3e61e",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "5d47b5f827ad886e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:22.810137Z",
     "start_time": "2024-04-19T03:25:22.798745Z"
    }
   },
   "outputs": [],
   "source": [
    "'''从训练集中提取 'y' 列'''\n",
    "y = df['y']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "outputs": [],
   "source": [
    "'''删除 'y' 列，保留其他列作为特征'''\n",
    "X = df.drop('y', axis=1)"
   ],
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:22.828682Z",
     "start_time": "2024-04-19T03:25:22.816088Z"
    }
   },
   "id": "77660ae324725e76"
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 使用网格搜索调整超参数"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "b369bfe1717aff72"
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "调参用时： 20.616955757141113 秒\n"
     ]
    },
    {
     "data": {
      "text/plain": "({'n_estimators': 100}, -547.829051984581)"
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 定义一个字典 'param_test' 来指定需要尝试的 'n_estimators' 参数的范围。\n",
    "# 'n_estimators' 是梯度增强树的数量，在这里从100增加到1000，步长为100。\n",
    "param_test = {\n",
    "    'n_estimators': range(100, 1000, 100)\n",
    "}\n",
    "\n",
    "# 创建一个GridSearchCV对象 'gsearch'。\n",
    "# - 'estimator' 设置为一个带有指定参数的XGBRegressor。\n",
    "# - 'param_grid' 设置为我们定义的 'param_test'，包含了要测试的 'n_estimators' 范围。\n",
    "# - 'scoring' 设置为 'neg_mean_squared_error'，意为使用负均方误差作为优化的分数。\n",
    "# - 'n_jobs' 设置为4，允许并行使用四个处理器。\n",
    "# - 'cv' 设置为5，表示将使用5折交叉验证。\n",
    "gsearch = GridSearchCV(\n",
    "    estimator=xgb.XGBRegressor(\n",
    "        learning_rate=0.1, # 学习速率：用于防止过拟合的缩减。\n",
    "        max_depth=5,       # 树的最大深度：控制树的深度以防止过拟合。\n",
    "        min_child_weight=1,# 孩子节点的最小权重之和，用于控制决策树的生长。\n",
    "        gamma=0,           # 惩罚项系数gamma。\n",
    "        subsample=0.8,     # 子样本比率，用于防止过拟合。\n",
    "        colsample_bytree=0.8, # 构建树时的列采样比率。\n",
    "        objective='reg:squarederror', # 指定损失函数类型为平方误差。\n",
    "        nthread=4,         # 线程数，用于指定训练时的并行线程数。\n",
    "        scale_pos_weight=1,# 正样本的权重，用于不平衡类别问题。\n",
    "        seed=27            # 随机数种子，用于结果的可复现性。\n",
    "    ),\n",
    "    param_grid=param_test, # 使用的参数字典。\n",
    "    scoring='neg_mean_squared_error', # 评分标准为负均方误差。\n",
    "    n_jobs=4, # 并行任务数。\n",
    "    cv=5      # 交叉验证折数。\n",
    ")\n",
    "star = time.time()\n",
    "gsearch.fit(X, y)  # 使用输入特征X和目标变量y来训练模型。\n",
    "end = time.time()\n",
    "print(\"调参用时：\", end - star, \"秒\")\n",
    "gsearch.best_params_, gsearch.best_score_ # 输出最佳参数和最佳得分。"
   ],
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:43.469404Z",
     "start_time": "2024-04-19T03:25:22.832994Z"
    }
   },
   "id": "26c37f9f569e9bb7"
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "bf1c9c51b91d0486",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:47.454249Z",
     "start_time": "2024-04-19T03:25:43.472793Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "({'max_depth': 4}, -546.2331954161684)"
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为100，调整 max_depth 的参数网格'''\n",
    "param_test = {\n",
    "        'max_depth': range(3, 10, 1)\n",
    "    }\n",
    "gsearch = GridSearchCV(estimator=xgb.XGBRegressor(learning_rate=0.1, n_estimators=100, min_child_weight=1, gamma=0, subsample=0.8, colsample_bytree=0.8, objective='reg:squarederror', nthread=4, scale_pos_weight=1, seed=27), param_grid=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5)\n",
    "gsearch.fit(X, y)\n",
    "gsearch.best_params_, gsearch.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "75b9ab8652f6fc8a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:49.319351Z",
     "start_time": "2024-04-19T03:25:47.456885Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "({'min_child_weight': 3}, -547.5181023886787)"
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为100，max_depth的最优参数为5，调整 min_child_weight 的参数网格'''\n",
    "param_test = {\n",
    "    'min_child_weight': range(1, 6, 1)\n",
    "}\n",
    "gsearch = GridSearchCV(estimator=xgb.XGBRegressor(learning_rate=0.1, n_estimators=100, max_depth=5, gamma=0, subsample=0.8, colsample_bytree=0.8, objective='reg:squarederror', nthread=4, scale_pos_weight=1, seed=27), param_grid=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5)\n",
    "gsearch.fit(X, y)\n",
    "gsearch.best_params_, gsearch.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "a6d117c659bfdc62",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:51.398049Z",
     "start_time": "2024-04-19T03:25:49.322271Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "({'gamma': 0.4}, -547.3923996756052)"
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为100，max_depth的最优参数为，min_child_weight的最优参数为1，调整 gamma 的参数网格'''\n",
    "param_test = {\n",
    "    'gamma': [i/10.0 for i in range(0, 5)]\n",
    "}\n",
    "gsearch = GridSearchCV(estimator=xgb.XGBRegressor(learning_rate=0.1, n_estimators=100, max_depth=5, min_child_weight=1, subsample=0.8, colsample_bytree=0.8, objective='reg:squarederror', nthread=4, scale_pos_weight=1, seed=27), param_grid=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5)\n",
    "gsearch.fit(X, y)\n",
    "gsearch.best_params_, gsearch.best_score_\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "cfa11757f799ac3c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:57.193220Z",
     "start_time": "2024-04-19T03:25:51.400212Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "({'colsample_bytree': 0.8, 'subsample': 0.6}, -547.3636305469187)"
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为100，max_depth的最优参数为5，min_child_weight的最优参数为1，gamma的最优参数为0.0，调整 subsample 和 colsample_bytree 的参数网格   '''\n",
    "param_test = {\n",
    "    'subsample': [i/10.0 for i in range(6, 10)],\n",
    "    'colsample_bytree': [i/10.0 for i in range(6, 10)]\n",
    "}\n",
    "gsearch = GridSearchCV(estimator=xgb.XGBRegressor(learning_rate=0.1, n_estimators=100, max_depth=5, min_child_weight=1, gamma=0.0, objective='reg:squarederror', nthread=4, scale_pos_weight=1, seed=27), param_grid=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5)\n",
    "gsearch.fit(X, y)\n",
    "gsearch.best_params_, gsearch.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "53b9746a0190ada7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:25:58.807820Z",
     "start_time": "2024-04-19T03:25:57.195495Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "({'learning_rate': 0.1}, -547.829051984581)"
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为100，max_depth的最优参数为5，min_child_weight的最优参数为1，gamma的最优参数为0.0，subsample的最优参数为0.8，colsample_bytree的最优参数为0.8，调整学习率'''\n",
    "param_test = {\n",
    "    'learning_rate': [0.01, 0.05, 0.1, 0.2]\n",
    "}\n",
    "gsearch = GridSearchCV(estimator=xgb.XGBRegressor(n_estimators=100, max_depth=5, min_child_weight=1, gamma=0.0, subsample=0.8, colsample_bytree=0.8, objective='reg:squarederror', nthread=4, scale_pos_weight=1, seed=27), param_grid=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5)\n",
    "gsearch.fit(X, y)\n",
    "gsearch.best_params_, gsearch.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "37963509138d3003",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:26:00.627309Z",
     "start_time": "2024-04-19T03:25:58.809988Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "({'reg_alpha': 0.01}, -547.5311249041179)"
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为100，max_depth的最优参数为5，min_child_weight的最优参数为1，gamma的最优参数为0.0，subsample的最优参数为0.8，colsample_bytree的最优参数为0.8，学习率的最优参数为0.1，调整L1正则化参数'''\n",
    "param_test = {\n",
    "    'reg_alpha': [0, 0.001, 0.005, 0.01, 0.05]\n",
    "}\n",
    "gsearch = GridSearchCV(estimator=xgb.XGBRegressor(learning_rate=0.1, n_estimators=100, max_depth=5, min_child_weight=1, gamma=0.0, subsample=0.8, colsample_bytree=0.8, objective='reg:squarederror', nthread=4, scale_pos_weight=1, seed=27), param_grid=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5)\n",
    "gsearch.fit(X, y)\n",
    "gsearch.best_params_, gsearch.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "a2097ff4e861dc8c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:26:02.481967Z",
     "start_time": "2024-04-19T03:26:00.630068Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "({'reg_lambda': 0.001}, -551.7008765144813)"
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''n_estimators的最优参数为100，max_depth的最优参数为5，min_child_weight的最优参数为1，gamma的最优参数为0.0，subsample的最优参数为0.8，colsample_bytree的最优参数为0.8，学习率的最优参数为0.1，L1正则化参数的最优参数为0.01，调整L2正则化参数'''\n",
    "param_test = {\n",
    "    'reg_lambda': [0, 0.001, 0.005, 0.01, 0.05]\n",
    "}\n",
    "gsearch = GridSearchCV(estimator=xgb.XGBRegressor(learning_rate=0.1, n_estimators=100, max_depth=5, min_child_weight=1, gamma=0.0, subsample=0.8, colsample_bytree=0.8, reg_alpha=0.01, objective='reg:squarederror', nthread=4, scale_pos_weight=1, seed=27), param_grid=param_test, scoring='neg_mean_squared_error', n_jobs=4, cv=5)\n",
    "gsearch.fit(X, y)\n",
    "gsearch.best_params_, gsearch.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "7d374eaec165ffac",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:26:02.492093Z",
     "start_time": "2024-04-19T03:26:02.484116Z"
    }
   },
   "outputs": [],
   "source": [
    "'''n_estimators的最优参数为100，max_depth的最优参数为5，min_child_weight的最优参数为1，gamma的最优参数为0.0，subsample的最优参数为0.8，colsample_bytree的最优参数为0.8，学习率的最优参数为0.1，L1正则化参数的最优参数为0.01，L2正则化参数的最优参数为0.05，建立一个带参数的xgboost回归模型'''\n",
    "xgb_model = xgb.XGBRegressor(learning_rate=0.1, n_estimators=100, max_depth=5, min_child_weight=1, gamma=0.0, subsample=0.8, colsample_bytree=0.8, reg_alpha=0.01, reg_lambda=0.05, objective='reg:squarederror', nthread=4, scale_pos_weight=1, seed=27)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "outputs": [],
   "source": [
    "'''拟合模型，并使用训练集进行预测，将预测结果存储在变量 y_pred 中，小于零的值替换为0'''\n",
    "xgb_model.fit(X, y)\n",
    "y_pred = xgb_model.predict(df_test)\n",
    "y_pred = np.where(y_pred<0, 0, y_pred)"
   ],
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-19T03:26:02.640560Z",
     "start_time": "2024-04-19T03:26:02.494269Z"
    }
   },
   "id": "c229bebd8749dcc8"
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "outputs": [],
   "source": [
    "'''将列标签修改为y，并增加列标签id，从8001开始'''\n",
    "df_test['y'] = y_pred\n",
    "df_test['id'] = range(8001, 8001+len(df_test))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-19T03:26:02.650604Z",
     "start_time": "2024-04-19T03:26:02.642417Z"
    }
   },
   "id": "b85630e144a39588"
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "outputs": [],
   "source": [
    "'''调整列标签顺序'''\n",
    "df_test = df_test[['id', 'y']]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-19T03:26:02.667141Z",
     "start_time": "2024-04-19T03:26:02.653163Z"
    }
   },
   "id": "734f8b740cac0065"
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "outputs": [
    {
     "ename": "OSError",
     "evalue": "Cannot save file into a non-existent directory: 'Share_Bike_Data\\Output'",
     "output_type": "error",
     "traceback": [
      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[1;31mOSError\u001B[0m                                   Traceback (most recent call last)",
      "Cell \u001B[1;32mIn[38], line 2\u001B[0m\n\u001B[0;32m      1\u001B[0m \u001B[38;5;124;03m'''导出数据至my_XGB_prediction.csv文件'''\u001B[39;00m\n\u001B[1;32m----> 2\u001B[0m \u001B[43mdf_test\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mto_csv\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43m./Share_Bike_Data/Output/XGBoost_GirdSearch.csv \u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mindex\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m)\u001B[49m\n",
      "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\pandas\\core\\generic.py:3902\u001B[0m, in \u001B[0;36mNDFrame.to_csv\u001B[1;34m(self, path_or_buf, sep, na_rep, float_format, columns, header, index, index_label, mode, encoding, compression, quoting, quotechar, lineterminator, chunksize, date_format, doublequote, escapechar, decimal, errors, storage_options)\u001B[0m\n\u001B[0;32m   3891\u001B[0m df \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(\u001B[38;5;28mself\u001B[39m, ABCDataFrame) \u001B[38;5;28;01melse\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mto_frame()\n\u001B[0;32m   3893\u001B[0m formatter \u001B[38;5;241m=\u001B[39m DataFrameFormatter(\n\u001B[0;32m   3894\u001B[0m     frame\u001B[38;5;241m=\u001B[39mdf,\n\u001B[0;32m   3895\u001B[0m     header\u001B[38;5;241m=\u001B[39mheader,\n\u001B[1;32m   (...)\u001B[0m\n\u001B[0;32m   3899\u001B[0m     decimal\u001B[38;5;241m=\u001B[39mdecimal,\n\u001B[0;32m   3900\u001B[0m )\n\u001B[1;32m-> 3902\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mDataFrameRenderer\u001B[49m\u001B[43m(\u001B[49m\u001B[43mformatter\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mto_csv\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m   3903\u001B[0m \u001B[43m    \u001B[49m\u001B[43mpath_or_buf\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3904\u001B[0m \u001B[43m    \u001B[49m\u001B[43mlineterminator\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mlineterminator\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3905\u001B[0m \u001B[43m    \u001B[49m\u001B[43msep\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43msep\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3906\u001B[0m \u001B[43m    \u001B[49m\u001B[43mencoding\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mencoding\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3907\u001B[0m \u001B[43m    \u001B[49m\u001B[43merrors\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43merrors\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3908\u001B[0m \u001B[43m    \u001B[49m\u001B[43mcompression\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mcompression\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3909\u001B[0m \u001B[43m    \u001B[49m\u001B[43mquoting\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mquoting\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3910\u001B[0m \u001B[43m    \u001B[49m\u001B[43mcolumns\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mcolumns\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3911\u001B[0m \u001B[43m    \u001B[49m\u001B[43mindex_label\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mindex_label\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3912\u001B[0m \u001B[43m    \u001B[49m\u001B[43mmode\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mmode\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3913\u001B[0m \u001B[43m    \u001B[49m\u001B[43mchunksize\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mchunksize\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3914\u001B[0m \u001B[43m    \u001B[49m\u001B[43mquotechar\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mquotechar\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3915\u001B[0m \u001B[43m    \u001B[49m\u001B[43mdate_format\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mdate_format\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3916\u001B[0m \u001B[43m    \u001B[49m\u001B[43mdoublequote\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mdoublequote\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3917\u001B[0m \u001B[43m    \u001B[49m\u001B[43mescapechar\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mescapechar\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3918\u001B[0m \u001B[43m    \u001B[49m\u001B[43mstorage_options\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mstorage_options\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m   3919\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n",
      "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\pandas\\io\\formats\\format.py:1152\u001B[0m, in \u001B[0;36mDataFrameRenderer.to_csv\u001B[1;34m(self, path_or_buf, encoding, sep, columns, index_label, mode, compression, quoting, quotechar, lineterminator, chunksize, date_format, doublequote, escapechar, errors, storage_options)\u001B[0m\n\u001B[0;32m   1131\u001B[0m     created_buffer \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mFalse\u001B[39;00m\n\u001B[0;32m   1133\u001B[0m csv_formatter \u001B[38;5;241m=\u001B[39m CSVFormatter(\n\u001B[0;32m   1134\u001B[0m     path_or_buf\u001B[38;5;241m=\u001B[39mpath_or_buf,\n\u001B[0;32m   1135\u001B[0m     lineterminator\u001B[38;5;241m=\u001B[39mlineterminator,\n\u001B[1;32m   (...)\u001B[0m\n\u001B[0;32m   1150\u001B[0m     formatter\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfmt,\n\u001B[0;32m   1151\u001B[0m )\n\u001B[1;32m-> 1152\u001B[0m \u001B[43mcsv_formatter\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43msave\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m   1154\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m created_buffer:\n\u001B[0;32m   1155\u001B[0m     \u001B[38;5;28;01massert\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(path_or_buf, StringIO)\n",
      "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\pandas\\io\\formats\\csvs.py:247\u001B[0m, in \u001B[0;36mCSVFormatter.save\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m    243\u001B[0m \u001B[38;5;250m\u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m    244\u001B[0m \u001B[38;5;124;03mCreate the writer & save.\u001B[39;00m\n\u001B[0;32m    245\u001B[0m \u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m    246\u001B[0m \u001B[38;5;66;03m# apply compression and byte/text conversion\u001B[39;00m\n\u001B[1;32m--> 247\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m \u001B[43mget_handle\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m    248\u001B[0m \u001B[43m    \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfilepath_or_buffer\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m    249\u001B[0m \u001B[43m    \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmode\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m    250\u001B[0m \u001B[43m    \u001B[49m\u001B[43mencoding\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mencoding\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m    251\u001B[0m \u001B[43m    \u001B[49m\u001B[43merrors\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43merrors\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m    252\u001B[0m \u001B[43m    \u001B[49m\u001B[43mcompression\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcompression\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m    253\u001B[0m \u001B[43m    \u001B[49m\u001B[43mstorage_options\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mstorage_options\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m    254\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m \u001B[38;5;28;01mas\u001B[39;00m handles:\n\u001B[0;32m    255\u001B[0m     \u001B[38;5;66;03m# Note: self.encoding is irrelevant here\u001B[39;00m\n\u001B[0;32m    256\u001B[0m     \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mwriter \u001B[38;5;241m=\u001B[39m csvlib\u001B[38;5;241m.\u001B[39mwriter(\n\u001B[0;32m    257\u001B[0m         handles\u001B[38;5;241m.\u001B[39mhandle,\n\u001B[0;32m    258\u001B[0m         lineterminator\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mlineterminator,\n\u001B[1;32m   (...)\u001B[0m\n\u001B[0;32m    263\u001B[0m         quotechar\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mquotechar,\n\u001B[0;32m    264\u001B[0m     )\n\u001B[0;32m    266\u001B[0m     \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_save()\n",
      "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\pandas\\io\\common.py:739\u001B[0m, in \u001B[0;36mget_handle\u001B[1;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001B[0m\n\u001B[0;32m    737\u001B[0m \u001B[38;5;66;03m# Only for write methods\u001B[39;00m\n\u001B[0;32m    738\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mr\u001B[39m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;129;01min\u001B[39;00m mode \u001B[38;5;129;01mand\u001B[39;00m is_path:\n\u001B[1;32m--> 739\u001B[0m     \u001B[43mcheck_parent_directory\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mstr\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43mhandle\u001B[49m\u001B[43m)\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m    741\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m compression:\n\u001B[0;32m    742\u001B[0m     \u001B[38;5;28;01mif\u001B[39;00m compression \u001B[38;5;241m!=\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mzstd\u001B[39m\u001B[38;5;124m\"\u001B[39m:\n\u001B[0;32m    743\u001B[0m         \u001B[38;5;66;03m# compression libraries do not like an explicit text-mode\u001B[39;00m\n",
      "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\pandas\\io\\common.py:604\u001B[0m, in \u001B[0;36mcheck_parent_directory\u001B[1;34m(path)\u001B[0m\n\u001B[0;32m    602\u001B[0m parent \u001B[38;5;241m=\u001B[39m Path(path)\u001B[38;5;241m.\u001B[39mparent\n\u001B[0;32m    603\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m parent\u001B[38;5;241m.\u001B[39mis_dir():\n\u001B[1;32m--> 604\u001B[0m     \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mOSError\u001B[39;00m(\u001B[38;5;124mrf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mCannot save file into a non-existent directory: \u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mparent\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n",
      "\u001B[1;31mOSError\u001B[0m: Cannot save file into a non-existent directory: 'Share_Bike_Data\\Output'"
     ]
    }
   ],
   "source": [
    "'''导出数据至my_XGB_prediction.csv文件'''\n",
    "df_test.to_csv('./Share_Bike_Data/Output/XGBoost_GirdSearch.csv ', index=False)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-19T03:26:04.169178Z",
     "start_time": "2024-04-19T03:26:02.675716Z"
    }
   },
   "id": "eebfe6b6515e8191"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
